// Module : sprites
// contient les fonctions de gestion et d'affichage des images en 4 niveaux de gris

#ifndef SPRITES__H__
#define SPRITES__H__

#include <tigcclib.h>

// énumère les différentes tailles possibles pour une image : 8x8 / 16x16 / 32x32
typedef enum sprite_type { SPRITE8, SPRITE16, SPRITE32 } sprite_type;

// définition du type (cf sprites.c)
typedef struct sprite* sprite;

// au moment de la création d'une entité, on lui affecte une taille d'image
void SPRsetType(sprite spr, sprite_type type);

// pour récupérer la taille de l'image
sprite_type SPRgetType(sprite spr);

// initialise la place dans la mémoire pour stocker un sprite
sprite SPRnew(sprite_type type);

// retourne un nouveau sprite identique à celui donné en argument
sprite SPRcopy(sprite spr);

// libère la mémoire allouée pour un sprite
void SPRfree(sprite skin);

// stocke une image de taille 8x8 dans une structure Sprite
void SPRsetSprite8(sprite skin, unsigned char image[16]);

// stocke une image de taille 16x16 dans une structure Sprite
void SPRsetSprite16(sprite skin, unsigned short image[32]);

// stocke une image de taille 32x32 dans une structure Sprite
void SPRsetSprite32(sprite skin, unsigned long image[64]);

// affiche à l'écran aux coordonnées données une image donnée
void SPRblit(sprite skin, int x, int y);

#endif
